//036. 双基回文数
//        十进制数 585 对应的二进制表示是 1001001001，这两个数字都是回文数，称 585 是一个双
//        基回文数。求一百万以下所有双基回文数字之和。(注意回文数的首位都不能为零)
//        答案：872187
public class Week036 {
    static boolean isHuiWen(String s) {
        return s.equals(new StringBuilder(s).reverse().toString());
    }

    static void run() {
        int ans = 0;
//        StringBuilder s = new StringBuilder();
        for (int i = 1; i < 1000000; ++i) {
            if (isHuiWen(Integer.toString(i))) {//如果十进制数本身是回文数
                if (isHuiWen(Integer.toBinaryString(i))) ans += i;//java的Integer类自带转二进制的api

//                for (int j = i; j != 0; j >>= 1) s.append(j & 1);//取出二进制位
//                if (isHuiWen(s.toString())) ans += i;
//                s.delete(0, s.length());//清空
            }
        }
        System.out.println(ans);
    }

    public static void main(String[] args) {
        long startTime = System.nanoTime();
        run();
        System.out.println("\n程序运行时间：" + (System.nanoTime() - startTime) + "ns.");
    }
}
